package modelo.obstaculos;

import java.util.Iterator;
import java.util.LinkedList;

import vista.VistaArena;

import modelo.enemigos.Enemigo;
import modelo.juego.Configuracion;
import vista.VistaPegote;

public class ObstaculoPegote extends Obstaculo {
	
	private LinkedList<Enemigo> enemigosAfectados;
	
	private static final long serialVersionUID = 2025749756178196306L;

	public ObstaculoPegote(ManejadorObstaculos manejador) {
		this.setCosto(Configuracion.COSTO_PEGOTE);
		this.setManejador(manejador);
		this.setEfectos(new LinkedList<Efecto>());
		enemigosAfectados = new LinkedList<Enemigo>();
	}

	public void Afectar(Enemigo enemigo) {
		
		if (!AlgunaVezAfectado(enemigo)){
				enemigo.Congelar(true);
				Efecto efecto = new Efecto(Configuracion.DURACION_OBSTACULO_PEGOTE, enemigo);
				this.getEfectos().add(efecto);
				this.enemigosAfectados.add(enemigo);
			}

	}

	public void Desafectar(Efecto efecto) {
		//this.getEfectos().remove(efecto);
		efecto.getEnemigo().Congelar(false);
	}
	
	private boolean AlgunaVezAfectado(Enemigo enemigo) {

		Iterator<Enemigo> iteradorEnemigos = this.enemigosAfectados.iterator();
		boolean encontrado = false;

		while (iteradorEnemigos.hasNext()) {
			Enemigo enemigoIt = (Enemigo) iteradorEnemigos.next();
			if (enemigoIt.equals(enemigo)) {
				encontrado = true;
			}
		}

		return encontrado;
	}
	
	public void RecrearVista(){
		this.addObserver(new VistaPegote(this));
		this.setChanged();
		this.notifyObservers();
	}
	
	

}
